var express = require('express')

var eventproxy = require('eventproxy');
// superagent(http://visionmedia.github.io/superagent/ ) 是个 http 方面的库，可以发起 get 或 post 请求
var superagent = require('superagent')
// cheerio(https://github.com/cheeriojs/cheerio ) 大家可以理解成一个 Node.js 版的 jquery，用来从网页中以 css selector 取数据，使用方式跟 jquery 一样一样的。
var cheerio = require('cheerio')
var url = require('url');
var  cnodeUrl = 'https://cnodejs.org/';

// var app = express();

// app.get('/',(req,res)=>{
    superagent.get(cnodeUrl).end((err,sres)=>{
        if(err){
            return next(err)
        }
        // sres.text 里面存储着网页的 html 内容，将它传给 cheerio.load 之后
        // 就可以得到一个实现了 jquery 接口的变量，我们习惯性地将它命名为 `$`
        // 剩下就都是 jquery 的内容了
        var $ = cheerio.load(sres.text);

        var topicUrls  = [];

        $('#topic_list .topic_title').each((idx,el)=>{
            var $el = $(el);
            var href = url.resolve(cnodeUrl,$el.attr('href'))
            topicUrls.push(href)
        })
        var items =[]
        var ep = new eventproxy();
        ep.after('topic_html',topicUrls.length,(topics)=>{
            topics = topics.map((topicPair)=>{
                const [topicUrl,topicHtml] = topicPair;
                var $ = cheerio.load(topicHtml);
                return ({
                    title:$('.topic_full_title').text().trim(),
                    href:topicUrl,
                    comment1:$('.reply_content').eq(0).text().trim(),
                })

                // return items.push({
                //     title:$('.topic_full_title').text().trim(),
                //     href:topicUrl,
                //     comment1:$('.reply_content').eq(0).text().trim(),
                // })
            })
            console.log('final:');
            console.log(topics);
            // res.send(topics)
        })
        topicUrls.forEach((topicUrl)=>{
            superagent.get(topicUrl).end((err,res)=>{
                console.log('fetch '+topicUrl+' successful');
                ep.emit('topic_html',[topicUrl,res.text])
            })
        })
        // res.send(topics)
    })
// })

// app.listen(3000,()=>{
//     console.log('app is listening at port 3000')
// })